package com.ruoyi.web.controller.tool;

import java.util.HashMap;
import java.util.Map;

public class NodeLabelConcatenator {

    private static final Map<Integer, String> labelMap = new HashMap<>();

    static {
        labelMap.put(100, "人才培养及氛围营造");
        labelMap.put(101, "创新相关投稿并经办公室发布");
        labelMap.put(102, "组织策划创新培训活动，开展品鉴会、发布会等活动");
        labelMap.put(103, "获得创新相关能力认证");
        labelMap.put(104, "参与线上创新评审、打榜等相关活动");
        labelMap.put(200, "创新申报及获奖（含专利）");
        labelMap.put(201, "三大创新");
        labelMap.put(202, "集团公司一等奖");
        labelMap.put(203, "集团公司二等奖");
        labelMap.put(204, "集团公司三等奖");
        labelMap.put(205, "集团公司优秀奖");
        labelMap.put(206, "省公司一等奖");
        labelMap.put(207, "省公司二等奖");
        labelMap.put(208, "省公司三等奖");
        labelMap.put(209, "省公司优秀奖");
        labelMap.put(210, "纳入上报省公司清单，并完成成果上报");
        labelMap.put(211, "QC");
        labelMap.put(212, "集团公司一等奖");
        labelMap.put(213, "集团公司二等奖");
        labelMap.put(214, "集团公司三等奖");
        labelMap.put(215, "集团公司优秀奖");
        labelMap.put(216, "省公司一等奖");
        labelMap.put(217, "省公司二等奖");
        labelMap.put(218, "省公司三等奖");
        labelMap.put(219, "省公司优秀奖");
        labelMap.put(220, "纳入上报省公司清单，并完成成果上报");
        labelMap.put(221, "微创新");
        labelMap.put(222, "省公司十强");
        labelMap.put(223, "省公司二十强");
        labelMap.put(224, "省公司五十强");
        labelMap.put(225, "省公司百强");
        labelMap.put(226, "纳入上报省公司清单，并完成成果上报");
        labelMap.put(227, "在岗技术革新");
        labelMap.put(228, "省公司一等奖");
        labelMap.put(229, "省公司二等奖");
        labelMap.put(230, "省公司三等奖");
        labelMap.put(231, "纳入上报省公司清单，并完成成果上报");
        labelMap.put(232, "其他主题创新");
        labelMap.put(233, "省公司一等奖");
        labelMap.put(234, "省公司二等奖");
        labelMap.put(235, "省公司三等奖");
        labelMap.put(236, "省公司优秀奖");
        labelMap.put(237, "纳入上报省公司清单，并完成成果上报");
        labelMap.put(238, "外部创新");
        labelMap.put(239, "省部级一等奖");
        labelMap.put(240, "省部级二等奖");
        labelMap.put(241, "省部级三等奖");
        labelMap.put(242, "省部级优秀奖");
        labelMap.put(243, "市级一等奖");
        labelMap.put(244, "市级二等奖");
        labelMap.put(245, "市级三等奖");
        labelMap.put(246, "市级优秀奖");
        labelMap.put(247, "申报发明专利奖（获专利申请号）");
        labelMap.put(248, "申报的实用新型和外观设计专利奖");
        labelMap.put(249, "专利获正式授权推广追加奖");
    }


    private static final Map<Integer, Integer> parentMap = new HashMap<>();

    static {
        parentMap.put(101, 100);
        parentMap.put(102, 100);
        parentMap.put(103, 100);
        parentMap.put(104, 100);
        parentMap.put(201, 200);

        parentMap.put(247, 200);
        parentMap.put(248, 200);
        parentMap.put(249, 200);
        parentMap.put(211, 200);
        parentMap.put(221, 200);
        parentMap.put(227, 201);
        parentMap.put(232, 201);
        parentMap.put(238, 201);

        //父节点201
        parentMap.put(202, 201);
        parentMap.put(203, 201);
        parentMap.put(204, 201);
        parentMap.put(205, 201);
        parentMap.put(206, 201);
        parentMap.put(207, 201);
        parentMap.put(208, 201);
        parentMap.put(209, 201);
        parentMap.put(210, 201);

        //父节点211
        parentMap.put(212, 211);
        parentMap.put(213, 211);
        parentMap.put(214, 211);
        parentMap.put(215, 211);
        parentMap.put(216, 211);
        parentMap.put(217, 211);
        parentMap.put(218, 211);
        parentMap.put(219, 211);
        parentMap.put(220, 211);

        //父节点221
        parentMap.put(222, 221);
        parentMap.put(223, 221);
        parentMap.put(224, 221);
        parentMap.put(225, 221);
        parentMap.put(226, 221);

        //父节点227
        parentMap.put(228, 227);
        parentMap.put(229, 227);
        parentMap.put(230, 227);
        parentMap.put(231, 227);

        //父节点232
        parentMap.put(233, 232);
        parentMap.put(234, 232);
        parentMap.put(235, 232);
        parentMap.put(236, 232);
        parentMap.put(237, 232);

        //父节点238
        parentMap.put(239, 238);
        parentMap.put(240, 238);
        parentMap.put(241, 238);
        parentMap.put(242, 238);
        parentMap.put(243, 238);
        parentMap.put(244, 238);
        parentMap.put(245, 238);
        parentMap.put(246, 238);
    }

    public static String getParentLabels(int leafNodeId) {
        StringBuilder stringBuilder = new StringBuilder();
        getParentLabelsRecursive(leafNodeId, stringBuilder);
        if (stringBuilder.length() > 0) {
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        }
        return stringBuilder.toString();
    }

    private static void getParentLabelsRecursive(int nodeId, StringBuilder stringBuilder) {
        if (!labelMap.containsKey(nodeId)) {
            return;
        }
        stringBuilder.insert(0, labelMap.get(nodeId) + "-");
        if (parentMap.containsKey(nodeId)) {
            getParentLabelsRecursive(parentMap.get(nodeId), stringBuilder);
        }
    }

    public static void main(String[] args) {
        int leafNodeId = 246;
        String parentLabels = getParentLabels(leafNodeId);
        System.out.println("传入id为" + leafNodeId + "，拼接后的父节点标签为：" + parentLabels);
    }
}

